package com.zh.utils;

import org.springframework.beans.factory.annotation.Autowired;

/**
 * @Description:
 * @ClassName ShiroUtil
 * @date: 2021.04.20 10:07
 * @Author: zhanghang
 */
public class ShiroUtil {

    private final static String PREFIX_USER_TOKEN = "user_token:";
    /**
     * description: 将token设置到redis中
     * date: 2020年-08月-05日 11:24
     * author: qdk
     *
     * @param token
     * @return void
     */
    public static void setRedisToken(String token,String username) {
        RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
        // 设置token缓存有效时间
        redisUtil.set(PREFIX_USER_TOKEN+ username, token);
        redisUtil.expire(PREFIX_USER_TOKEN + username, JwtUtil.EXPIRE_TIME * 2 / 1000);
    }

    /**
     * description: 根据用户获取token
     * date: 2021年-04月-20日 10:10
     * author: zhanghang
     *
     * @param username
     * @return java.lang.String
     */
    public static String getTokenByUsername(String username){
        RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
        if (redisUtil.hasKey(PREFIX_USER_TOKEN+ username)){
            return redisUtil.get(PREFIX_USER_TOKEN+ username).toString();
        }
        return null;
    }

    /**
     * description: 根据用户判断token 是否存在
     * date: 2021年-04月-20日 10:14
     * author: zhanghang
     * 
     * @param 
     * @return boolean true: 存在， false: 不存在
     */ 
    public static boolean isExistTokenByUsername(String username){
        RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
        return redisUtil.hasKey(PREFIX_USER_TOKEN+ username);
    }

    /**
     * description: 刷新token
     * date: 2020年-08月-05日 11:24
     * author: qdk
     *
     * @param token
     * @return void
     */
    public static void refreshToken(String token, String username) {
        RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
        // 设置token缓存有效时间
        redisUtil.set(PREFIX_USER_TOKEN + username, token);
        redisUtil.expire(PREFIX_USER_TOKEN + username, JwtUtil.EXPIRE_TIME * 2 / 1000);
    }
}
